' 🟡 DECLARATIONS CONST pi2# = _PI(2) , _ side_size% = 501 , _ pie_center% = (side_size% - 1) / 2 , _ pie_radius% = pie_center% - 2 , _ paint_pos_radius% = pie_radius% - 5 DIM slice_sum# , _ slice_pct# , _ color& DECLARE SUB DoRead() DECLARE SUB DoChartPhase(phase%) ' 🟡 MAIN PROGRAM SCREEN _NEWIMAGE(side_size%, side_size%, 12) : COLOR ,15 : CLS CALL DoChartPhase(1) CALL DoChartPhase(2) END ' 🟡 DATA ' slice%, color& DATA 14, 1 DATA 20, 12 DATA 7, 7 DATA 38, 2 DATA 15, 13 DATA 1, 4 DATA 5, 14 DATA -1 ' 🟡 SUBROUTINES SUB DoRead() READ slice_pct#, color& END SUB SUB DoChartPhase(phase%) RESTORE slice_sum# = 0 : CALL DoRead() DO CIRCLE (pie_center%,pie_center%), pie_radius%, CHOOSE(phase%, 0, 15) , - pi2# * slice_sum# / 100, - pi2# * (slice_pct# + slice_sum#) / 100 IF phase% = 1 THEN PSET (pie_center%,pie_center%), 0 DRAW "BTA" + (INT( _R2D( ( pi2# * (slice_pct#+slice_sum#)/100 ) ) ) - 2) + " R " + STR$(paint_pos_radius%) PAINT (POINT(0),POINT(1)), color&, 0 END IF slice_sum# = slice_sum# + slice_pct# READ slice_pct#, color& LOOP UNTIL slice_pct# = -1 END SUB